/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package code;

/**
 *
 * @author Catarina
 */
import java.io.IOException;
import java.util.*;

public class MedicaoTempos {

    public static Rede tempoUtilizador() {
        System.out.println("Importar:\n");
        Rede r = new Rede();
        
        GregorianCalendar timer = new GregorianCalendar();
        long before, after, elapsed;
        before = timer.getTimeInMillis();

        try {
            r = LerFicheiro.importUsers("/home/tiago/Dropbox/LI3_JAVA/LI3_JAVA_4/src/li3_java_4/utilizadoresFSQ_UM.txt");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        timer = new GregorianCalendar();
        after = timer.getTimeInMillis();
        elapsed = (after - before);
        System.out.println("Done!");
        System.out.println("Demorou: " + elapsed + " milisegundos.");
        return r;
    }
    
    public static void tempoAmizades(Rede r) {

        GregorianCalendar timer = new GregorianCalendar();
        long before, after, elapsed;


        before = timer.getTimeInMillis();
        try {
            r = LerFicheiro.importFriends("/home/tiago/Dropbox/LI3_JAVA/LI3_JAVA_4/src/li3_java_4/relacoesEntreAmigos.txt",r);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        timer = new GregorianCalendar();
        after = timer.getTimeInMillis();
        elapsed = (after - before);
        System.out.println("Done!");
        System.out.println("Demorou " + elapsed + " milisegundos.");
    }

    
    public static void tempoInserirUser(Rede r){
        String nome = "";
        String nick = "";
        String morada = "";
        String mail = "";
        
        Scanner input = new Scanner(System.in);
        System.out.println("Insira o nome pretendido:\n");
        nome = input.nextLine();
        System.out.println("Insira o nickname pretendido:\n");
        nick = input.nextLine();
        System.out.println("Insira a sua morada:\n");
        morada = input.nextLine();
        System.out.println("Insira o seu e-mail:\n");
        mail = input.nextLine();
        
        User u = new User(nome, nick, morada, mail);
        
        GregorianCalendar timer = new GregorianCalendar();
        long before, after, elapsed;
        before = timer.getTimeInMillis();
        
        r.addUser(u);
        
        timer = new GregorianCalendar();
        after = timer.getTimeInMillis();
        elapsed = (after - before);
        System.out.println("\nDone!");
        System.out.println("Demorou " + elapsed + " milisegundos.\n");
        System.out.println(u.toString());
    }
    
    public static void tempoProcuraUser(Rede r){
        User aux = new User();
        int choice = 0;
        String s = "";
        Scanner input = new Scanner(System.in);
        System.out.println("Deseja procurar o utilizador por nome (1) ou nickname (2)?\n");
        choice = input.nextInt();
        if(choice == 1){
            System.out.println("Qual o nome do utilizador que deseja pesquisar?");
            s = input.next();
            
            GregorianCalendar timer = new GregorianCalendar();
            long before, after, elapsed;
            before = timer.getTimeInMillis();
            
            aux = r.searchUsersNome(s);
            
            timer = new GregorianCalendar();
            after = timer.getTimeInMillis();
            elapsed = (after - before);
            System.out.println("Done!");
            System.out.println("Demorou " + elapsed + " milisegundos.");
            System.out.println(aux.toString());
            return;
        }
        if(choice == 2){
            System.out.println("Qual o nick do utilizador que deseja pesquisar?");
            s = input.next();
            
            GregorianCalendar timer = new GregorianCalendar();
            long before, after, elapsed;
            before = timer.getTimeInMillis();
            
            aux = r.searchUsersNick(s);
            
            timer = new GregorianCalendar();
            after = timer.getTimeInMillis();
            elapsed = (after - before);
            System.out.println("Done!");
            System.out.println("Demorou " + elapsed + " milisegundos");
            System.out.println(aux.toString());
            return;
        }
        else{ 
            System.out.println("Escolha inválida!\n");
            tempoProcuraUser(r);
            return;
        }
            
    }
    
    public static void tempoAdicionarPedido(Rede r){
        String sender = "";
        String receiver = "";
        User auxS = new User();
        User auxR = new User();
        Scanner input = new Scanner(System.in);
        
        System.out.println("Qual o seu nick?");
        sender = input.nextLine();
        auxS = r.searchUsersNick(sender);
        if(auxS == null){ 
            System.out.println("Utilizador não encontrado!");
            tempoAdicionarPedido(r);
            return;
        }
        
        System.out.println("Qual o nickname do utilizador que deseja enviar o pedido de amizade?");
        receiver = input.nextLine();
        auxR = r.searchUsersNick(receiver);
        if(auxR == null){
            System.out.println("Utilizador não encontrado!");
            tempoAdicionarPedido(r);
            return;
        }

        long startTime = System.nanoTime();


        r.addPedidoGeral(auxS, auxR);
        long endTime = System.nanoTime();
        long timeDifference = endTime - startTime;

        System.out.println("Done!");
        System.out.println("Demorou " + timeDifference + " nanosegundos.");
        System.out.println(auxR.toString());

    }
    
    public static void tempoImprimirRede(Rede r) throws IOException{
        GregorianCalendar timer = new GregorianCalendar();
        long before, after, elapsed;
        before = timer.getTimeInMillis();
        
        r.toStringFich();
        
        timer = new GregorianCalendar();
        after = timer.getTimeInMillis();
        elapsed = (after - before);
        System.out.println("Done!");
        System.out.println("Demorou " + elapsed + " milisegundos");
        
    }
}
